def gcd_loop(a,b):
    product=a*b
    if a<b:
        a,b=b,a
    while b!=0:
        a,b=b,a%b
    return (a,product//a)

def gcd_recursion(a,b):
    if b==0:
        return a
    return gcd_recursion(b,a%b)

a,b=[int(i) for i in input("please input 2 num").split()]
s=a*b
# print('%d是最大公约数,%d是最小公倍数'%(gcd_loop(a,b)))
a=gcd_recursion(a,b)
print(f'{a} 是最大公约数,{s//a} 是最小公倍数')
